package generic;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.ListIterator;

/**
 * @author SWJ
 * @create 2021-06-21 14:13
 * 用来测list接口的子类试ArrayList
 */
public class TestArrayList {
    public static void main(String[] args) {
        //创建对象使用无参构造
        ArrayList<Integer> list = new ArrayList<>();
        //存入一些测试数据 集合中添加元素
        list.add(100);
        list.add(100);
        list.add(100);
        list.add(200);
        list.add(100);
        list.add(200);
        list.add(400);

//        list.clear();
        System.out.println(list);
        System.out.println(list.contains(100));
        //ture是非包含元素100
        System.out.println(list.get(1));
        //200在1处的元素
        System.out.println(list.indexOf(200));
        System.out.println(list.lastIndexOf(200));
        System.out.println(list.remove(1));
        //移除下标为1的元素
        System.out.println(list);

//        System.out.println(list.remove(100));

//        System.out.println(Integer.valueOf(300));
        //把Integer拆箱转化int类型
        System.out.println(list.remove(Integer.valueOf(300)));
        //把Integer装箱转化int类型
        System.out.println(list);

        System.out.println(list.size());
        //获取集合元素个数
        System.out.println(Arrays.toString(list.toArray()));
        //list转化数组

        /**测试集合的迭代方式
         * 1.for循环
         * 2.高效for循环
         * 3.iterator
         * 4.listIterator
         * 1.方式由于List是有序的，可以根据下标进行遍历
         *从下标为0开始 */

        System.out.println("1");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(i);
        }

        for (Integer i : list) {
            System.out.println(i);
        }

        Iterator<Integer> it = list.iterator();
        while (it.hasNext()){
            Integer num=it.next();
            System.out.println(num);
        }

        ListIterator<Integer> it2=list.listIterator();
        while (it2.hasNext()){
            Integer s2=it2.next();
            System.out.println(s2);
        }

    }

}
